package com.itc.bi.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @TableName xxl_job_info
 */
@TableName(value ="xxl_job_info")
@Data
public class XxlJobInfoEntity implements Serializable {
    /**
     *
     */
    @TableId(type = IdType.AUTO)
	@ApiModelProperty("主键id")
	private Integer id;

    /**
     * 执行器主键ID
     */
	@ApiModelProperty("执行器id")
	@NotNull(message = "执行器id不能为空")
	private Integer jobGroup;

    /**
     *
     */
	@ApiModelProperty("任务描述")
	@NotBlank(message = "任务描述不能为空")
    private String jobDesc;

    /**
     * 添加时间
     */
	@ApiModelProperty(value = "创建时间",hidden = true)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    private Date addTime;

    /**
     *
     */
	@ApiModelProperty(value = "修改时间",hidden = true)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    private Date updateTime;

    /**
     * 作者
     */
	@ApiModelProperty("负责人")
	@NotBlank(message = "负责人不能为空")
    private String author;

    /**
     * 报警邮件
     */
	@ApiModelProperty("报警邮件地址")
    private String alarmEmail;

    /**
     * 调度类型
     */
	@ApiModelProperty("调度类型 无,CRON(cron表达式),FIX_RATE(固定速度,单位秒)")
	@NotBlank(message = "调度类型不能为空")
    private String scheduleType;

    /**
     * 调度配置，值含义取决于调度类型
     */
	@ApiModelProperty("调度配置，值含义取决于调度类型，cron表达式或者数值")
    private String scheduleConf;

    /**
     * 调度过期策略
     */
	@ApiModelProperty("调度过期策略")
    private String misfireStrategy;

    /**
     * 执行器路由策略
     */
	@ApiModelProperty("路由策略,见路由策略下拉框")
    private String executorRouteStrategy;

    /**
     * 执行器任务handler
     */
	@ApiModelProperty("执行器任务handler")
    private String executorHandler;

    /**
     * 执行器任务参数
     */
	@ApiModelProperty("执行器参数")
    private String executorParam;

    /**
     * 阻塞处理策略
     */
	@ApiModelProperty("阻塞处理策略")
    private String executorBlockStrategy;

    /**
     * 任务执行超时时间，单位秒
     */
	@ApiModelProperty("任务执行超时时间，单位秒")
    private Integer executorTimeout;

    /**
     * 失败重试次数
     */
	@ApiModelProperty("失败重试次数,大于0时生效")
    private Integer executorFailRetryCount;

    /**
     * GLUE类型
     */
	@ApiModelProperty("GLUE类型,BEAN")
	@NotBlank(message = "GLUE类型不能为空")
    private String glueType;

    /**
     * GLUE源代码
     */
	@ApiModelProperty("GLUE源代码")
    private String glueSource;

    /**
     * GLUE备注
     */
	@ApiModelProperty("GLUE备注")
    private String glueRemark;

    /**
     * GLUE更新时间
     */
	@TableField(value = "glue_updatetime",fill = FieldFill.INSERT_UPDATE)
	@ApiModelProperty(value = "GLUE更新时间",hidden = true)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    private Date glueUpdatetime;

    /**
     * 子任务ID，多个逗号分隔
     */
	@ApiModelProperty("子任务ID，多个逗号分隔")
    private String childJobid;

    /**
     * 调度状态：0-停止，1-运行
     */
	@ApiModelProperty("调度状态：0-停止，1-运行")
    private Byte triggerStatus;

    /**
     * 上次调度时间
     */
	@ApiModelProperty("上次调度时间")
    private Long triggerLastTime;

    /**
     * 下次调度时间
     */
	@ApiModelProperty("下次调度时间")
    private Long triggerNextTime;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
